// 导入Vue
import Vue from 'vue'

// base.css 用于样式重置 => 更好的替代方案 normalize.css(样式兼容)
import 'normalize.css/normalize.css' // A modern alternative to CSS resets

// 全部导入 => 直接使用, 无需手动引入
// 1. 首先这个项目不是toC项目. 用户体验没有那么重要
// 2. 项目大, 用组件库的组件可能也会用的7788
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

// 如果需要英文模式, 那么需要引入英文语言包
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n

// 项目中有一个@ 是src的别名(已经处理好了)
// 引入了一个全局样式文件
import '@/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router'

// 模块化语法: 默认导出/按需导出
// 直接执行js文件   import './xxx/hhh.js'
// 处理svg图标...
import '@/icons' // icon
// 处理页面能不能正常显示...
import '@/permission' // permission control

// 设置组件库的语言模式 英文
// Vue.use(ElementUI, { locale: locale })
// 如果中文模式
Vue.use(ElementUI)

// filters
import * as filters from '@/filters'
Object.keys(filters).forEach((key) => {
  Vue.filter('formatTime', filters[key])
})
// 下载=>导入=>安装
import Print from 'vue-print-nb'
Vue.use(Print)

Vue.config.productionTip = false

// 需求: 我想要拿到所有的按需导出, 全部都注册成全局自定义指令 => 批量注册
// 可以一次性拿到模块的所有按需导出
import * as directives from '@/directives'
// console.log(directives)

import obj from '@/components'
Vue.use(obj)

// 只要是插件就可以vue.use 一旦被use 就会立即执行isstall放发
// 2. 通过Object.keys() 可以将对象转数组  再去遍历
// ['color', 'imgerror']
// push  pop  filter  map  reduce  sort
Object.keys(directives).forEach((key) => {
  // console.log(key, directives[key])
  Vue.directive(key, directives[key])
})

new Vue({
  el: '#app', // 指定挂载点
  router,
  store,
  render: h => h(App)
})
